package com.tree.leetcode.array;

/**
 * @ClassName com.tree.leetcode.array
 * Description: LCR 002. 二进制求和
 * <p>
给定两个 01 字符串 a 和 b ，请计算它们的和，并以二进制字符串的形式输出。

输入为 非空 字符串且只包含数字 1 和 0。

示例 1:

输入: a = "11", b = "10"
输出: "101"
示例 2:

输入: a = "1010", b = "1011"
输出: "10101"
 * </p>
 * @Author tree
 * @Date 3/14/24 8:18 AM
 * @Version 1.0
 */
public class AddBinary_lcr002 {
    public static void main(String[] args) {
        String a = "10";
        String b = "11";
        System.out.println(addBinary(a,b));

    }

    public static  String addBinary(String a, String b) {
        StringBuilder ans = new StringBuilder();
        int len = Math.max(a.length(), b.length());
        int carry = 0;
        for(int i = 0; i< len; i++){
            carry += (i<a.length()) ? (a.charAt(a.length()-1-i) -'0'):0;
            carry += (i<b.length()) ? (b.charAt(b.length()-1-i)-'0'):0;
            ans.append((char)(carry%2+'0'));
            carry /= 2;
        }

        if(carry > 0 ){
            ans.append('1');
        }
        ans.reverse();
        return ans.toString();

    }
}
